;:sys36864
	;.opt oo
	*= 50000
tmp	=247
latch	=820
mem	=704
bul	=204
	jmp help
	jmp inform
	jmp swap
	jmp generate
	jmp fread
	jmp eval
	jmp hunt
	jmp using
	jmp search
	jmp varmem
	jmp memvar
	jmp number
	jmp replace
	jmp insert
	jmp sort
kofi	jsr $aefd
	jmp $b08b
stack	=663
het	.byt 13,13
	.byte "string-utility von nikolaus heusler"
	.byt 13,13
	.byte "ver. 1, 07.92"
	.byt 13,13
	.byt 13
	.byte "sys 50000  hilfe"
	.byt 13
	.byte "sys 50003  inform"
	.byt 13
	.byte "sys 50006  swap"
	.byt 13
	.byte "sys 50009  generate"
	.byt 13
	.byte "sys 50012  input file"
	.byt 13
	.byte "sys 50015  eval"
	.byt 13
	.byte "sys 50018  string-suche"
	.byt 13
	.byte "sys 50021  using"
	.byt 13
	.byte "sys 50024  array-suche"
	.byt 13
	.byte "sys 50027  varmem"
	brk
he2	.byt 13
	.byte "sys 50030  memvar"
	.byt 13
	.byte "sys 50033  number"
	.byt 13
	.byte "sys 50036  ersetzen"
	.byt 13
	.byte "sys 50039  einsetzen"
	.byt 13
	.byte "sys 50042  sortieren"
	.byt 13,13,0
delt	.byte "\x9d \x9d"
	brk
help	lda #<het
	ldy #>het
	jsr $ab1e
	lda #<he2
	ldy #>he2
	jmp $ab1e
lenst	jsr $b7f1
	stx tmp+1
	txa
	beq qill
strg	jsr kofi
	sta $49
	sty $4a
	jmp $b6a3
qill	jmp $b248
makest	sta tmp
	jsr prepst
settxt	cpy tmp
	beq carried
	lda latch,y
	sta ($62),y
	iny
	bne settxt
carried	rts
prepst	jsr $b475
	ldy #2
prst	lda $61,y
	sta ($49),y
	dey
	bpl prst
	iny
	rts
numvar	jsr kofi
	sta $49
	sty $4a
	lda #<mem
	ldy #>mem
	jsr $bba2
	lda $d
	bpl typok
	jmp $ad99
typok	lda $e
	jmp $a9c2
axfac	stx $63
	sta $62
	ldx #$90
	sec
	jsr $bc49
varnum	ldx #<mem
	ldy #>mem
	jmp $bbd4
pgetfre	jsr $b3a6
getfre	jsr $aefd
	jsr $ad9e
	jsr $b6a3
	tay
	rts
inform	jsr lenst
	ldx #0
	stx tmp
keylp	lda #0
	sta $cc
wk	jsr 65508
	beq wk
	ldx #1
	stx $cd
wx	ldx $cf
	bne wx
	inc $cc
	cmp #13
	bne tec
	lda tmp
	jsr makest
	jmp $aad7
tec	cmp #20
	beq del
	cmp #32
	bcc keylp
	cmp #128
	bcc ok
	cmp #160
	bcc keylp
ok	ldx tmp
	cpx tmp+1
	bcs keylp
	sta latch,x
	jsr $ffd2
	lda #0
	sta 212
	inc tmp
	bne keylp
del	ldx tmp
	beq keylp
	lda #<delt
	ldy #>delt
	jsr $ab1e
	dec tmp
	jmp keylp
swap	jsr $aefd
	jsr $ad9e
	jsr $ad8f
	lda 100
	sta tmp
	lda 101
	sta tmp+1
	jsr $aefd
	jsr $ad9e
	jsr $ad8f
	ldy #2
coppr	lda (tmp),y
	tax
	lda (100),y
	sta (tmp),y
	txa
	sta (100),y
	dey
	bpl coppr
	rts
generate	jsr lenst
	jsr $aefd
	jsr $ad9e
	bit $d
	bmi str
	jsr $b1aa
	lda $64
	bne ill
	lda $65
	sta mem
	lda #<mem
	ldy #>mem
	sta 34
	sty 35
	lda #1
	bne strr
str	jsr $b782
	beq ill
strr	sta tmp
	ldx #0
make	ldy #0
mke	lda (34),y
	sta latch,x
	inx
	cpx #bul
	bcs tool
	iny
	cpy tmp
	bcc mke
	dec tmp+1
	bne make
	txa
	jmp makest
ill	jmp $b248
tool	jmp $a571
fread	jsr $b7f1
	jsr $e11e
	jsr lenst
	lda tmp+1
	jsr $b475
	ldy #2
sto	lda $61,y
	sta ($49),y
	dey
	bpl sto
	iny
fetch	jsr $e112
	sta ($62),y
	iny
	cpy tmp+1
	bcc fetch
	jmp $ffcc
eval	ldx #90
save	lda $200,x
	sta 820,x
	dex
	bpl save
	jsr getfre
	beq ill
	lda #0
ev1	sta $200,y
	dey
	cpy #-1
	beq ev2
	lda (34),y
	beq ill
	bne ev1
ev2	lda 122
	pha
	lda 123
	pha
	lda #0
	sta 144
	sta 122
	lda #2
	sta 123
	jsr $a579
	jsr 115
	tsx
	stx stack
	lda #<neuerr
	ldy #>neuerr
	sta 768
	sty 769
	jsr $ad8a
weiter	jsr varnum
	ldx stack
	txs
	lda #139
	ldy #227
	sta 768
	sty 769
	pla
	sta 123
	pla
	sta 122
	ldx #90
resume	lda 820,x
	sta $200,x
	dex
	bpl resume
	jmp numvar
neuerr	stx 144
	jsr $b8f7
	jmp weiter
hunt	jsr pgetfre
	sta tmp+2
	lda 34
	ldy 35
	sta tmp
	sty tmp+1
	jsr getfre
	beq illq
	sta tmp+5
	lda #0
	sta tmp+3
hu1	ldy #0
	sty tmp+4
	lda tmp+3
	sta tmp+6
hu2	ldy tmp+6
	cpy tmp+2
	bcs zero
	lda (tmp),y
	ldy tmp+4
	cmp (34),y
	bne hu3
	inc tmp+6
	iny
	inc tmp+4
	cpy tmp+5
	bcc hu2
	bcs hu5
hu3	inc tmp+3
	bne hu1
zero	ldx #-1
	.byt $2c
hu5	ldx tmp+3
	inx
	lda #0
	jsr axfac
	jmp numvar
illq	jmp $b248
using	jsr $aefd
	jsr $ad8a
	ldx #0
	bit $66
	bpl pos
	dex
pos	stx pm
	lsr $66
	ldx #<pl
	ldy #>pl
	jsr $bbd4
	jsr $b7f1
	stx maxlen
	jsr $b7f1
	stx sign
	jsr $b7f1
	stx taus
	jsr $aefd
	jsr $ad8a
	ldx #<p2
	ldy #>p2
	jsr $bbd4
	jsr $b7a1
	stx after
	jsr $b7f1
	stx fill
	jsr $b7f1
	stx fish
	lda #$f9
	ldy #$ba
	jsr $ba8c
	lda #<p2
	ldy #>p2
	jsr $bf78
	ldx #<p2
	ldy #>p2
	jsr $bbd4
	lda #<pl
	ldy #>pl
	jsr $ba28
	jsr $b849
	jsr $bccc
	jsr $bc0c
	lda #<p2
	ldy #>p2
	jsr $bba2
	jsr $bb12
	ldy #0
	jsr $bdec
	ldx #-1
po2	inx
	lda $100,x
	beq po1
	cmp #"."
	bne po2
	beq po3
po1	lda #0
	sta $101,x
po3	stx p2
	ldy fish
	lda fische,y
	sta $100,x
	ldy #-1
po4	inx
	iny
	lda $100,x
	bne po4
po5	cpy after
	beq po6
	bcs po7
	lda #"0"
	sta $100,x
	iny
	inx
	bne po5
po7	jmp $b4d0
po6	lda #0
	sta $100,x
	ldx #-1
su	inx
	lda $100,x
	bne su
	ldy p2
	stx pl
	bne nu1
nu9	lda $100,x
	sta $101,x
	dex
	bpl nu9
	lda #"0"
	sta $100
	inc pl
nu1	lda taus
	beq nu3
	lda #3
	sta pl+1
nu2	dey
	bmi nu3
	dec pl+1
	bpl nu2
	lda #3
	sta pl+1
	iny
	sty pl+2
	ldy pl
nu4	lda $100,y
	sta $101,y
	dey
	cpy pl+2
	bcs nu4
	inc pl
	iny
	lda #"."
	sta $100,y
	bne nu2
nu3	lda #32
	ldx pm
	bpl pl1
	lda #"-"
pl1	ldx sign
	beq pl2
	bpl pl3
	ldx pl
	sta $100,x
	lda #0
	sta $101,x
	inc pl
	bne pl2
pl3	ldx pl
	tay
pl5	lda $100,x
	sta $101,x
	dex
	bpl pl5
	inc pl
	sty $100
pl2	ldx pl
	cpx maxlen
	beq le1
	bcc le2
	jmp 42353
le2	ldy maxlen
le3	lda $100,x
	sta $100,y
	dey
	dex
	bpl le3
	lda fill
le4	sta $100,y
	dey
	bpl le4
le1	ldx #-1
co2	inx
	lda $100,x
	bne co2
	stx pl
	jsr strg
	lda pl
	jsr prepst
st	cpy pl
	beq ca
	lda $100,y
	sta ($62),y
	iny
	bne st
ca	rts
maxlen	=645
sign	=659
pm	=661
taus	=662
fill	=663
after	=664
fish	=665
pl	=724
p2	=pl+5
fische	brk
	.byte "., "
varmem	jsr $aefd
	jsr $ad8a
	jsr $b7f7
	sty tmp
	sta tmp+1
	jsr getfre
transstr	dey
	lda (34),y
	sta (tmp),y
	tya
	bne transstr
	rts
memvar	jsr $aefd
	jsr $b7eb
	lda 20
	ldy 21
	sta tmp
	sty tmp+1
	txa
	pha
	pha
	jsr strg
	pla
	jsr prepst
	pla
	tay
copytext	dey
	lda (tmp),y
	sta ($62),y
	tya
	bne copytext
	rts
search	jsr getfre
	sta $b4
	lda 34
	ldy 35
	sta $b5
	sty $b6
	lda $7a
	pha
	lda $7b
	pha
vor	jsr 115
	cmp #"("
	bne vor
	jsr $ad8a
	jsr $b7f7
	sty elemnr
	sta elemnr+1
	pla
	sta $7b
	pla
	sta $7a
	jsr kofi
	sta tmp+2
	sty tmp+3
	jsr kofi
	sta ende
	sty ende+1
	lda #0
	sta lenflag
	ldy $b4
	sty prueflen
	dey
	lda ($b5),y
	cmp #"*"
	bne getdes
	dec lenflag
	dec prueflen
getdes	ldy #2
gd1	lda (tmp+2),y
	sta $fb,y
	dey
	bpl gd1
	lda prueflen
	beq positiv
	cmp $fb
	php
	lda lenflag
	beq nostern
	plp
	bcs nextstr
	bcc pruefen
nostern	plp
	bne nextstr
pruefen	ldy #0
pr1	lda ($b5),y
	cmp #"?"
	beq nextchr
	cmp ($fc),y
	bne nextstr
nextchr	iny
	cpy prueflen
	bcc pr1
	beq positiv
nextstr	lda tmp+2
	clc
	adc #3
	sta tmp+2
	bcc nocy3
	inc tmp+3
nocy3	inc elemnr
	bne nocy4
	inc elemnr+1
nocy4	lda tmp+3
	cmp ende+1
	bcc getdes
	lda tmp+2
	cmp ende
	bcc getdes
	beq getdes
	lda #0
	tax
	beq sethi
positiv	ldx elemnr
	lda elemnr+1
sethi	jsr axfac
	jmp numvar
ende	=661
elemnr	=665
prueflen	=664
lenflag	=663
anf	=181
flag	=704
dir	=180
sgc	=659
hun	=661
zeh	=662
ein	=663
puffz	=664
xmerk	=665
last	=666
ebene	=667
place	.byt 102,0,3,7,11,15,20,24,28,32,36,40,43
table	.byte "eiNzweIdreIvieRfuenFsecHsieBachTneuNzehN"
	.byte "elFzwoelFunDhunderTtausenDzwanziGdreissiG"
	.byte "minus\xa0SeN millioNen\xa0EnulL kommA"
setv	.byt %11000000
number	jsr $aefd
	jsr $ad8a
	lda 102
	sta sgc
	jsr $bc58
	lda #189
	tay
	jsr $bc5b
	bmi rechne
	lda sgc
	sta 102
	jmp $b468
rechne	ldx #0
	stx puffz
	stx hun
	jsr $bbca
	jsr $bccc
	lda sgc
	bpl posi
	ldy #81
	jsr text
posi	lda 97
	bne nonull
	ldy #102
	jsr text
	jmp satt
nonull	jsr $bddd
	ldx #0
	ldy #-1
	stx 256
	stx ebene
leas	lda 256+1,x
	php
	and #15
	sta 256+1,x
	plp
	beq nullp
	inx
	iny
	cpy #3
	bcc leas
	inc ebene
	ldy #0
	beq leas
nullp	ldx #1
	cpy #1
	beq zweiz
	tya
	beq einez
dreiz	ldy 256,x
	sty hun
	beq nohun
	jsr rein
	jsr korrh
	ldy #52
	jsr text
nohun	inx
zweiz	inx
einez	lda 256,x
	sta ein
	dex
	lda 256,x
	sta zeh
	cmp #1
	bne no12
	lda ein
	beq iszehn
	ldy #11
	cmp #1
	beq iself
	cmp #2
	bne no12
	iny
iself	jsr rein
	jmp wars
no12	ldy ein
	beq nil
	jsr rein
	jsr korre
nil	lda zeh
	beq wars
	cmp #1
	bne norma
iszehn	ldy #10
	jsr rein
	jmp wars
norma	ldy ein
	beq nahun
	pha
	ldy #49
	jsr text
	pla
nahun	cmp #2
	beq zwzig
	cmp #3
	bne vierz
	ldy #73
	.byt $2c
zwzig	ldy #66
	jsr text
	jmp wars
vierz	ldy zeh
	jsr rein
	ldy #70
	jsr text
wars	clv
	lda hun
	bne sperr
	lda zeh
	bne sperr
	lda ein
	beq nill
	cmp #1
	bne sperr
	lda ebene
	cmp #2
	bne sperr
	ldy #101
	jsr text
	bit setv
sperr	lda ebene
	cmp #2
	bne arm
	ldy #90
	jsr text
	bvc skip
	ldy #100
	.byt $2c
skip	ldy #98
	jsr text
arm	cmp #1
	bne nill
	ldy #59
	jsr text
nill	inx
	inx
	dec ebene
	bmi satt
	jmp dreiz
satt	pla
	pla
	lda #$57
	ldy #0
	jsr $bba2
	jsr $bddd
	ldx #0
suchnk	inx
	lda 256,x
	beq naus
	cmp #"."
	bne suchnk
	ldy #106
	jsr text
suchvk	inx
	lda 256,x
	beq naus
	and #15
	pha
	ldy #100
	jsr text
	pla
	tay
	jsr rein
	jsr korrn
	jmp suchvk
naus	jsr strg
	lda puffz
	jmp makest
rein	sty last
	lda place,y
	tay
text	stx xmerk
	ldx puffz
drin	lda table,y
	php
	and #127
	sta latch,x
	inx
	iny
	plp
	bpl drin
	stx puffz
	ldx xmerk
	rts
korre	lda last
	cmp #1
	bne noeis
	lda ebene
	bne noeis
	lda zeh
	bne noeis
ns	ldy #87
	bne text
korrh	sec
	.byt $24
noeis	clc
	php
	lda last
	cmp #7
	beq sieb
	cmp #6
	beq sex
	plp
retn	rts
sieb	ldy #88
	.byt $2c
sex	ldy #87
	plp
	bcs text
	lda zeh
	cmp #1
	bne text
	rts
korrn	lda last
	cmp #1
	beq ns
	bne korrh
replace	jsr pgetfre
	sta tmp+2
	lda 34
	ldy 35
	sta tmp
	sty tmp+1
	jsr $aefd
	jsr $ad9e
	bit $d
	bmi stg
	jsr $b1aa
	lda $64
	bne illqu
	lda $65
	jmp that
stg	jsr $b782
	beq illqu
	ldy #0
	lda (34),y
that	sta tmp+3
	jsr getfre
	sta tmp+4
	lda 34
	ldy 35
	sta tmp+5
	sty tmp+6
	ldx #0
	ldy #0
repl	cpy tmp+2
	bcs done
	lda (tmp),y
	cmp tmp+3
	bne norm
	sty tmp+7
	ldy #0
dusch	cpy tmp+4
	bcs cont
	lda (tmp+5),y
	sta latch,x
	iny
	inx
	cpx #bul
	bcc dusch
over	jmp $a571
norm	sta latch,x
	inx
	cpx #bul
	bcs over
	iny
	bne repl
cont	ldy tmp+7
	iny
	bne repl
done	txa
	pha
	jsr strg
	pla
	jmp makest
illqu	jmp $b248
insert	jsr pgetfre
	beq illqu
	cmp #bul
	bcs over
	sta tmp
	ldy #0
in1	lda (34),y
	sta latch,y
	iny
	cpy tmp
	bcc in1
	jsr $b7f1
	txa
	beq illqu
	dex
	stx tmp+1
	jsr getfre
	sta tmp+2
	ldx tmp+1
	ldy #0
in2	cpy tmp+2
	bcs in3
	lda (34),y
	sta latch,x
	inx
	iny
	cpx tmp
	bcc in2
in3	jsr strg
	lda tmp
	jmp makest
sort	lda $7a
	pha
	lda $7b
	pha
pre	jsr 115
	cmp #"("
	bne pre
	jsr $ad8a
	jsr $b7f7
	sty elemnr
	sta elemnr+1
	pla
	sta $7b
	pla
	sta $7a
	jsr kofi
	sta anf
	sty anf+1
	jsr kofi
	sta ende
	sty ende+1
	jsr $b7f1
	stx dir
su1	lda anf
	ldy anf+1
	sta tmp
	sty tmp+1
	lda #0
	sta flag
su2	lda tmp+1
	cmp ende+1
	bcc su3
	bne sub
	lda tmp
	cmp ende
	bcs sub
su3	lda tmp
	clc
	adc #3
	sta tmp+2
	lda tmp+1
	adc #0
	sta tmp+3
	ldy #2
su5	lda (tmp),y
	sta 2,y
	lda (tmp+2),y
	sta 164,y
	dey
	bpl su5
	lda 2
	cmp 164
	bcc is2
	lda 164
is2	sta 167
	ldy #0
su6	lda (3),y
	cmp (165),y
	beq su7
	php
	lda dir
	bpl up
	plp
	bcc su8
	bne su9
up	plp
	bcs su8
	bne su9
su7	iny
	cpy 167
	bcc su6
	cpy 2
	php
	lda dir
	bmi down
	plp
	beq su9
	bne su88
down	plp
	bne su9
su88	cpy 164
	beq su9
su8	ldy #2
	sty flag
sua	lda 2,y
	sta (tmp+2),y
	lda 164,y
	sta (tmp),y
	dey
	bpl sua
su9	lda tmp+2
	sta tmp
	lda tmp+3
	sta tmp+1
	jmp su2
sub	lda flag
	beq suc
	jmp su1
suc	rts
